﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Iacym.Entities;
using Iacym.Repository;
using Microsoft.Practices.Unity;

namespace Iacym.BusinessLogic
{
    public class UsuarioBL:IUsuarioBL
    {
        [Dependency]
        public UsuarioRepository usuariorepository { get; set; }

        public List<USUARIO> GetAllFromUsuario()
        {
            return usuariorepository.GetAllFromUsuario();
        }

        public List<USUARIO> GetFromUsuarioByPersona(string descripcion)
        {
            return usuariorepository.GetFromUsuarioByPersona(descripcion);
        }

        public List<USUARIO> GetFromUsuarioByRol(string descripcion)
        {
            return usuariorepository.GetFromUsuarioByRol(descripcion);
        }

        public void AddUsuario(USUARIO usuario)
        {
            usuariorepository.AddUsuario(usuario);
        }

        public void UpdateUsuario(USUARIO usuario)
        {
            usuariorepository.UpdateUsuario(usuario);
        }

        public void DeleteUsuario(int numero)
        {
            usuariorepository.DeleteUsuario(numero);
        }


        public void Ingresar(USUARIO usuario)
        {
            var existe = usuariorepository.ExisteUsuario(usuario.PERSONA.Dni, usuario.Password);

            if (!existe)
            {
                var error = string.Format("USUARIO NO REGISTRADO");
                throw new Exception(error);
            }
        }

        public USUARIO GetAllFromUsuarioByPersonaId(string dni)
        {
            return usuariorepository.GetAllFromUsuarioByPersonaId(dni);
        }

        public void VerificarAsignacion(USUARIO usuario)
        {
            var existe = usuariorepository.ExisteUsuarioRol(usuario.PersonaId);

            if (existe)
            {
                var error = string.Format("Usuario ya asignado a un Rol, pero puede Editarlo");
                throw new Exception(error);
            }
        }


        public void UpdatePasswdUsuario(USUARIO usuario)
        {
            usuariorepository.UpdatePasswdUsuario(usuario);
        }

        public void ValidarPasswd(USUARIO usuario)
        {
            var existe = usuariorepository.PasswdCorrecta(usuario.Password);

            if (!existe)
            {
                var error = string.Format("PASSWORD INCORRECTA");
                throw new Exception(error);
            }
        }
    }
}
